這題會用到ASCII code
https://www.ascii-code.com/
輸入正整數判斷它是否是11 的倍數,而數字大小可能到1000 digits。
如何判斷是否為11的倍數,若正整數的奇數位和與偶數位和,兩者差的絕對值是11 的倍數,則為11 的倍數。
由於測資範圍很大,而有限測資時間,故這題用字串來當input,藉由ASCII cod來做轉換。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;//數字會很大,用字串來處理
while(cin>>s)
{
if(s=="0")
{
break;
}
int odd=0,even=0;//odd計算奇數位數的加總
//even計算偶數位數的加總
for(int i=0;i<s.length();i++)//為了要計算每個位數,但系統不知道有幾位數,可用s.length()取出位數
//一定要從i=0開始算
{
if(i%2==1)//先找出奇數位數
{
odd+=(s[i]-'0');//再將奇數位的值加總
/*字串某一個字來計算會用ASCII碼, 因為數字的ASCII碼相連,
所以減掉'0'的ASCII碼就是字串的數字了*/
}
else//再找出偶數位
{
even+=(s[i]-'0');
}
}
if((odd-even)%11==0)//奇偶位數相減能整除11就是11的倍數
{
cout<<s<<" is a multiple of 11."<<endl;
}
else
{
cout<<s<<" is not a multiple of 11."<<endl;
}
}
return 0;
}
這題單純尋找a至b之間的所有奇數和
#include <iostream>
using namespace std;
int main(){
int n,count=1;
cin>>n;
while(n--){
int a,b;
int sum=0;
cin>>a>>b;
for(int i=a;i<=b;i++){
if(i%2)sum+=i;
}
cout<<"Case "<<count<<": "<<sum<<endl;
count++;
}
}